// 封装缓存类
export default class Storage {
  constructor(name) {
    this.name = name
  }

  // 设置缓存
  setItem(params) {
    let obj = {
      key: "",  // 缓存的键
      value: "",   // 缓存的值
      expires: "",  // 到期时间
      startTime: new Date().getTime()   // 记录存入缓存的时间，毫秒数
    }

    let option = {}

    // 将传入的数据绑定在option上
    Object.assign(option, obj, params)

    // 如果没有设置缓存到期时间
    if (!option.expires) {
      option.expires = 21600000    // 默认缓存到期时间为6小时
    }


    // 保存
    localStorage.setItem(option.key, JSON.stringify(option))
  }


  // 获取缓存
  getItem(name) {

    // 拿到缓存
    let item = JSON.parse(localStorage.getItem(name))

    // 如果没有该缓存，直接返回
    if (!item) {
      return false
    }

    // 获取当前获取缓存的时间
    let now = new Date().getTime()
    // 如果缓存过期
    if (now - item.startTime >= item.expires) {
      localStorage.removeItem(name) // 清除缓存
      return false
    }
    // 缓存未过期，返回缓存
    return item
  }

  // 删除缓存
  removeItem(name) {
    localStorage.removeItem(name)
  }

  // 清空缓存
  clear() {
    localStorage.clear()
  }

}